<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            position: absolute;
            left: 0;
            width: 100px;
            height: 100px;
            background-color: pink;
            border-radius: 50%;
        }
    </style>
</head>
<body>
    <div></div>
    <script>
        // 1. 触摸元素 touchstart： 获取手指初始坐标，同时活得原来的位置
        // 2. 移动元素 touchmove ： 计算手指的华东距离，并且移动盒子
        // 3. 离开手指 touchend  ：

        // 方法一：
        var div = document.querySelector('div');
        var startX = 0; // 获取初始坐标
        var startY = 0;
        var x = 0;
        var y = 0;
        div.addEventListener('touchstart', function(e) {
            // 获取手指初始坐标
            startX = e.targetTouches[0].pageX;
            startY = e.targetTouches[0].pageY;
            x = this.offsetLeft;
            y = this.offsetTop;
        });

        div.addEventListener('touchmove', function(e) {
            // 计算手指移动距离： 手指移动之后的坐标减去手指初始坐标
            var moveX = e.targetTouches[0].pageX - startX;
            var moveY = e.targetTouches[0].pageY - startY; 
            // 移动我们的盒子 盒子原理啊的位置 + 手指移动的距离
            this.style.left = x + moveX + 'px';
            this.style.top = y + moveY + 'px';
            e.preventDefault(); //阻止屏幕滚动的默认行为
        });


        // 方法二：从盒子的偏移量的角度出发
        // 原理：首先计算手指距离盒子的距离，再移动的过程中，盒子的偏移量等于手指新的坐标减去手指在盒子中的距离。

        // var fingerInBoxX = 0;
        // var fingerInBoxY = 0
        // div.addEventListener('touchstart', function(e) {
        //     // 获取手指在盒子内部的距离
        //     fingerInBoxX = e.targetTouches[0].pageX - this.offsetLeft;
        //     fingerInBoxY = e.targetTouches[0].pageY - this.offsetTop;
        // })
        // div.addEventListener('touchmove', function(e) {
        //     // 盒子新的偏移量=手指新的坐标-手指在盒子中的距离。
        //     this.style.left = e.targetTouches[0].pageX - fingerInBoxX + 'px';
        //     this.style.top = e.targetTouches[0].pageY - fingerInBoxY + 'px';
        // })
    </script>
</body>
</html>